package com.oldbook.manage.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.oldbook.common.annotation.Excel;
import com.oldbook.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 学生发布书籍信息对象 tb_publish_info
 *
 * @author Exiaoke
 * @date 2025-02-18
 */
@ApiModel(description = "学生发布书籍信息对象")
@Data // Lombok annotation to generate all the boilerplate that is normally required for POJOs.
@NoArgsConstructor // Generates a constructor with no parameters.
@AllArgsConstructor // Generates a constructor with 1 parameter for each field in the class.
public class PublishInfo extends BaseEntity
        {
private static final long serialVersionUID = 1L;

    /**
     * 发布ID（主键）
     */
    @ApiModelProperty(value = "发布ID（主键）", name = "publishId", example = "", required = true)
    private Long publishId;

    /**
     * 学生ID（外键，关联 student_info.student_id）
     */
            @Excel(name = "学生ID", readConverterExp = "外=键，关联,s=tudent_info.student_id")
    @ApiModelProperty(value = "学生ID（外键，关联 student_info.student_id）", name = "studentId", example = "", required = true)
    private String studentId;

    /**
     * 书籍名称
     */
            @Excel(name = "书籍名称")
    @ApiModelProperty(value = "书籍名称", name = "bookName", example = "", required = true)
    private String bookName;

    /**
     * ISBN（可选）
     */
            @Excel(name = "ISBN", readConverterExp = "可=选")
    @ApiModelProperty(value = "ISBN（可选）", name = "isbn", example = "", required = true)
    private String isbn;

    /**
     * 作者（可选）
     */
            @Excel(name = "作者", readConverterExp = "可=选")
    @ApiModelProperty(value = "作者（可选）", name = "author", example = "", required = true)
    private String author;

    /**
     * 出版社（可选）
     */
            @Excel(name = "出版社", readConverterExp = "可=选")
    @ApiModelProperty(value = "出版社（可选）", name = "publisher", example = "", required = true)
    private String publisher;

    /**
     * 联系方式（手机/邮箱）
     */
            @Excel(name = "联系方式", readConverterExp = "手=机/邮箱")
    @ApiModelProperty(value = "联系方式（手机/邮箱）", name = "contactInfo", example = "", required = true)
    private String contactInfo;

    /**
     * 书籍描述（详细信息）
     */
            @Excel(name = "书籍描述", readConverterExp = "详=细信息")
    @ApiModelProperty(value = "书籍描述（详细信息）", name = "description", example = "", required = true)
    private String description;

    /**
     * 参考价格（单位：元）
     */
            @Excel(name = "参考价格", readConverterExp = "单=位：元")
    @ApiModelProperty(value = "参考价格（单位：元）", name = "referencePrice", example = "", required = true)
    private BigDecimal referencePrice;

    /**
     * 审核状态（0-待审核，1-通过，2-拒绝）
     */
            @Excel(name = "审核状态", readConverterExp = "0=-待审核，1-通过，2-拒绝")
    @ApiModelProperty(value = "审核状态（0-待审核，1-通过，2-拒绝）", name = "status", example = "", required = true)
    private String status;

    /**
     * 审核人（关联 sys_user.user_name）
     */
            @Excel(name = "审核人", readConverterExp = "关=联,s=ys_user.user_name")
    @ApiModelProperty(value = "审核人（关联 sys_user.user_name）", name = "auditBy", example = "", required = true)
    private String auditBy;

    /**
     * 审核时间
     */
            @JsonFormat(pattern = "yyyy-MM-dd")
            @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "审核时间", name = "auditTime", example = "", required = true)
    private Date auditTime;

    /**
     * 备注（审核意见等）
     */
            @Excel(name = "备注", readConverterExp = "审=核意见等")
    @ApiModelProperty(value = "备注（审核意见等）", name = "remarks", example = "", required = true)
    private String remarks;


        }